home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX 6.2 Development Libraries
/
SGI IRIX 6.2 Development Libraries.iso
/
dist
/
complib.idb
/
usr
/
include
/
fft.h.z
/
fft.h
Wrap
C/C++ Source or Header
|
1996-03-14
|
24KB
|
516 lines
#ifndef _SGI_FFT_
#define _SGI_FFT_
#ifdef __cplusplus
extern "C" {
#endif
#define FACTOR_SPACE 15
#define FAST_MALLOC_STRING "FFT_FAST_MALLOC"
/* *******************************************************
Complex structures definitions
******************************************************* */
typedef struct {
float re;
float im;
} complex;
typedef struct {
double re;
double im;
} zomplex;
/* *******************************************************
C Functions prototypes
******************************************************* */
/* *******************************************************
complex <---> complex FFTs
******************************************************* */
complex *cfft1di( int n, complex *save);
int cfft1d( int job, int n, complex *array, int inc, complex *save);
complex *cfftm1di( int m, complex *save);
int cfftm1d( int job, int m, int n, complex *array, int incI, int incJ, complex *save);
complex *cfft2di( int n1, int n2, complex *save);
int cfft2d( int job, int n1, int n2, complex *array, int ld, complex *save);
complex *cfft3di( int n1, int n2, int n3, complex *save);
int cfft3d( int job, int n1, int n2, int n3, complex *array, int ld1, int ld2, complex *save);
/* *******************************************************
zomplex <---> zomplex FFTs
******************************************************* */
zomplex *zfft1di( int n, zomplex *save);
int zfft1d( int job, int n, zomplex *array, int inc, zomplex *save);
zomplex *zfftm1di( int m, zomplex *save);
int zfftm1d( int job, int m, int n, zomplex *array, int incI, int incJ, zomplex *save);
zomplex *zfft2di( int n1, int n2, zomplex *save);
int zfft2d( int job, int n1, int n2, zomplex *array, int ld, zomplex *save);
zomplex *zfft3di( int n1, int n2, int n3, zomplex *save);
int zfft3d( int job, int n1, int n2, int n3, zomplex *array, int ld1, int ld2, zomplex *save);
/************************************************************************
Product modules ...
Performs convolution in 1 Domain by Product in the other
********************************************************************** */
void cprod1d( int n, complex *y, int incy, complex *filter, int incx);
void zprod1d( int n, zomplex *y, int incy, zomplex *filter, int incx);
void cprodm1d( int n1, int n2, complex *y, int incy, int ldy, complex *filter, int incx, int ldx);
void zprodm1d( int n1, int n2, zomplex *y, int incy, int ldy, zomplex *filter, int incx, int ldx);
void cprod2d( int n1, int n2, complex *y, int ldy, complex *filter, int ldx);
void zprod2d( int n1, int n2, zomplex *y, int ldy, zomplex *filter, int ldx);
void cprod3d( int n1, int n2, int n3, complex *y, int ldy1, int ldy2,
complex *filter, int ldx1, int ldx2);
void zprod3d( int n1, int n2, int n3, zomplex *y, int ldy1, int ldy2,
zomplex *filter, int ldx1, int ldx2);
/************************************************************************
Scaling modules ...
Scale the sequence by value APLHA ...
to keep absolute values after Direct+Inverse transform.
********************************************************************** */
void cscal1d( int n, float alpha, complex *y, int inc);
void zscal1d( int n, double alpha, zomplex *y, int inc);
void cscalm1d( int m, int n, float alpha, complex *array, int incI, int incJ);
void zscalm1d( int m, int n, double alpha, zomplex *array, int incI, int incJ);
void cscal2d( int nx, int ny, float alpha, complex *y, int ld);
void zscal2d( int nx, int ny, double alpha, zomplex *y, int ld);
void cscal3d( int nx, int ny, int nz, float alpha, complex *y, int ld1,int ld2);
void zscal3d( int nx, int ny, int nz, double alpha, zomplex *y,int ld1,int ld2);
/* *******************************************************
Fortran Subroutines prototypes
******************************************************* */
/* *******************************************************
complex <---> complex FFTs
******************************************************* */
void cfft1di_( int *n, complex *save);
void cfft1d_( int *job, int *n, complex *array, int *inc, complex *save);
complex *cfftm1di_( int *m, complex *save);
void cfftm1d_( int *job, int *m, int *n, complex *array, int *incI, int *incJ, complex *save);
void cfft2di_( int *n1, int *n2, complex *save);
void cfft2d_( int *job, int *n1, int *n2, complex *array, int *ld, complex *save);
void cfft3di_( int *n1, int *n2, int *n3, complex *save);
void cfft3d_( int *job, int *n1, int *n2, int *n3, complex *array, int *ld1, int *ld2, complex *save);
/* ****************************
zomplex <---> zomplex FFTs
**************************** */
void zfft1di_( int *n, zomplex *save);
void zfft1d_( int *job, int *n, zomplex *array, int *inc, zomplex *save);
zomplex *zfftm1di_( int *m, zomplex *save);
void zfftm1d_( int *job, int *m, int *n, zomplex *array, int *incI, int *incJ, zomplex *save);
void zfft2di_( int *n1, int *n2, zomplex *save);
void zfft2d_( int *job, int *n1, int *n2, zomplex *array, int *ld, zomplex *save);
void zfft3di_( int *n1, int *n2, int *n3, zomplex *save);
void zfft3d_( int *job, int *n1, int *n2, int *n3, zomplex *array, int *ld1, int *ld2, zomplex *save);
/************************************************************************
Product modules ...
Performs convolution in 1 Domain by Product in the other
********************************************************************** */
void cprod1d_( int *n, complex *y, int *incy, complex *filter, int *incx);
void zprod1d_( int *n, zomplex *y, int *incy, zomplex *filter, int *incx);
void cprodm1d_( int *n1, int *n2, complex *y, int *incy, int *ldy, complex *filter, int *incx, int *ldx);
void zprodm1d_( int *n1, int *n2, zomplex *y, int *incy, int *ldy, zomplex *filter, int *incx, int *ldx);
void cprod2d_( int *n1, int *n2, complex *y, int *ldy, complex *filter, int *ldx);
void zprod2d_( int *n1, int *n2, zomplex *y, int *ldy, zomplex *filter, int *ldx);
void cprod3d_( int *n1, int *n2, int *n3, complex *y, int *ldy1, int *ldy2,
complex *filter, int *ldx1, int *ldx2);
void zprod3d_( int *n1, int *n2, int *n3, zomplex *y, int *ldy1, int *ldy2,
zomplex *filter, int *ldx1, int *ldx2);
/************************************************************************
Scaling modules ...
Scale the sequence by value APLHA ...
to keep absolute values after Direct+Inverse transform.
********************************************************************** */
void cscal1d_( int *n, float *alpha, complex *y, int *inc);
void zscal1d_( int *n, double *alpha, zomplex *y, int *inc);
void cscalm1d_( int *m, int *n, float *alpha, complex *array, int *inc, int *lda);
void zscalm1d_( int *m, int *n, double *alpha, zomplex *array, int *inc, int *lda);
void cscal2d_( int *nx, int *ny, float *alpha, complex *y, int *ld);
void zscal2d_( int *nx, int *ny, double *alpha, zomplex *y, int *ld);
void cscal3d_( int *nx, int *ny, int *nz, float *alpha, complex *y, int *ld1,int *ld2);
void zscal3d_( int *nx, int *ny, int *nz, double *alpha, zomplex *y,int *ld1,int *ld2);
/* *******************************************************
C real <---> complex FFTs
******************************************************* */
float *sfft1di( int n, float *save);
float *sfft1dui( int n, float *save);
int sfft1d( int job, int n, float *array, int inc, float *save);
int sfft1du( int job, int n, float *array, int inc, float *save);
float *sfftm1di( int m, float *save);
int sfftm1d( int job, int m, int n, float *array, int incI, int incJ, float *save);
float *sfftm1dui( int m, float *save);
int sfftm1du( int job, int m, int n, float *array, int incI, int incJ, float *save);
float *sfft2di( int n1, int n2, float *save);
float *sfft2dui( int n1, int n2, float *save);
int sfft2d( int job, int n1, int n2, float *array, int ld, float *save);
int sfft2du( int job, int n1, int n2, float *array, int ld, float *save);
float *sfft3di( int n1, int n2, int n3, float *save);
float *sfft3dui( int n1, int n2, int n3, float *save);
int sfft3d( int job, int n1, int n2, int n3, float *array, int ld1, int ld2, float *save);
int sfft3du( int job, int n1, int n2, int n3, float *array, int ld1, int ld2, float *save);
/* *******************************************************
C double <---> zomplex FFTs
******************************************************* */
double *dfft1di( int n, double *save);
double *dfft1dui( int n, double *save);
int dfft1d( int job, int n, double *array, int inc, double *save);
int dfft1du( int job, int n, double *array, int inc, double *save);
double *dfftm1di( int m, double *save);
int dfftm1d( int job, int m, int n, double *array, int incI, int incJ, double *save);
double *dfftm1dui( int m, double *save);
int dfftm1du( int job, int m, int n, double *array, int incI, int incJ, double *save);
double *dfft2di( int n1, int n2, double *save);
double *dfft2dui( int n1, int n2, double *save);
int dfft2d( int job, int n1, int n2, double *array, int ld, double *save);
int dfft2du( int job, int n1, int n2, double *array, int ld, double *save);
double *dfft3di( int n1, int n2, int n3, double *save);
double *dfft3dui( int n1, int n2, int n3, double *save);
int dfft3d( int job, int n1, int n2, int n3, double *array, int ld1, int ld2, double *save);
int dfft3du( int job, int n1, int n2, int n3, double *array, int ld1, int ld2, double *save);
/* *******************************************************
NEW ... C double <---> zomplex FFTs
******************************************************* */
double *dzfft1dui( int n, double *save);
int dzfft1du( int job, int n, double *array, int inc, double *save);
int zdfft1du( int job, int n, double *array, int inc, double *save);
double *dzfftm1dui( int m, double *save);
int dzfftm1du( int job, int m, int n, double *array, int incI, int incJ, double *save);
int zdfftm1du( int job, int m, int n, double *array, int incI, int incJ, double *save);
double *dzfft2dui( int n1, int n2, double *save);
int dzfft2du( int job, int n1, int n2, double *array, int ld, double *save);
int zdfft2du( int job, int n1, int n2, double *array, int ld, double *save);
double *dzfft3dui( int n1, int n2, int n3, double *save);
int dzfft3du( int job, int n1, int n2, int n3, double *array, int ld1, int ld2, double *save);
int zdfft3du( int job, int n1, int n2, int n3, double *array, int ld1, int ld2, double *save);
float *scfft1dui( int n, float *save);
int scfft1du( int job, int n, float *array, int inc, float *save);
int csfft1du( int job, int n, float *array, int inc, float *save);
float *scfftm1dui( int m, float *save);
int scfftm1du( int job, int m, int n, float *array, int incI, int incJ, float *save);
int csfftm1du( int job, int m, int n, float *array, int incI, int incJ, float *save);
float *scfft2dui( int n1, int n2, float *save);
int scfft2du( int job, int n1, int n2, float *array, int ld, float *save);
int csfft2du( int job, int n1, int n2, float *array, int ld, float *save);
float *scfft3dui( int n1, int n2, int n3, float *save);
int scfft3du( int job, int n1, int n2, int n3, float *array, int ld1, int ld2, float *save);
int csfft3du( int job, int n1, int n2, int n3, float *array, int ld1, int ld2, float *save);
/*
* Fortran Interface
*/
void dzfft1dui_( int *n, double *save);
void dzfft1du_( int *job, int *n, double *array, int *inc, double *save);
void zdfft1du_( int *job, int *n, double *array, int *inc, double *save);
void dzfftm1dui_( int *m, double *save);
void dzfftm1du_( int *job, int *m, int *n, double *array, int *incI, int *incJ, double *save);
void zdfftm1du_( int *job, int *m, int *n, double *array, int *incI, int *incJ, double *save);
void dzfft2dui_( int *n1, int *n2, double *save);
void dzfft2du_( int *job, int *n1, int *n2, double *array, int *ld, double *save);
void zdfft2du_( int *job, int *n1, int *n2, double *array, int *ld, double *save);
void dzfft3dui_( int *n1, int *n2, int *n3, double *save);
void dzfft3du_( int *job, int *n1, int *n2, int *n3, double *array, int *ld1, int *ld2, double *save);
void zdfft3du_( int *job, int *n1, int *n2, int *n3, double *array, int *ld1, int *ld2, double *save);
void scfft1dui_( int *n, float *save);
void scfft1du_( int *job, int *n, float *array, int *inc, float *save);
void csfft1du_( int *job, int *n, float *array, int *inc, float *save);
void scfftm1dui_( int *m, float *save);
void scfftm1du_( int *job, int *m, int *n, float *array, int *incI, int *incJ, float *save);
void csfftm1du_( int *job, int *m, int *n, float *array, int *incI, int *incJ, float *save);
void scfft2dui_( int *n1, int *n2, float *save);
void scfft2du_( int *job, int *n1, int *n2, float *array, int *ld, float *save);
void csfft2du_( int *job, int *n1, int *n2, float *array, int *ld, float *save);
void scfft3dui_( int *n1, int *n2, int *n3, float *save);
void scfft3du_( int *job, int *n1, int *n2, int *n3, float *array, int *ld1, int *ld2, float *save);
void csfft3du_( int *job, int *n1, int *n2, int *n3, float *array, int *ld1, int *ld2, float *save);
/* *******************************************************
NEW ... Packed C double <---> zomplex FFTs
******************************************************* */
double *dzfft1di( int n, double *save);
int dzfft1d( int job, int n, double *array, int inc, double *save);
int zdfft1d( int job, int n, double *array, int inc, double *save);
double *dzfftm1di( int m, double *save);
int dzfftm1d( int job, int m, int n, double *array, int incI, int incJ, double *save);
int zdfftm1d( int job, int m, int n, double *array, int incI, int incJ, double *save);
double *dzfft2di( int n1, int n2, double *save);
int dzfft2d( int job, int n1, int n2, double *array, int ld, double *save);
int zdfft2d( int job, int n1, int n2, double *array, int ld, double *save);
double *dzfft3di( int n1, int n2, int n3, double *save);
int dzfft3d( int job, int n1, int n2, int n3, double *array, int ld1, int ld2, double *save);
int zdfft3d( int job, int n1, int n2, int n3, double *array, int ld1, int ld2, double *save);
float *scfft1di( int n, float *save);
int scfft1d( int job, int n, float *array, int inc, float *save);
int csfft1d( int job, int n, float *array, int inc, float *save);
float *scfftm1di( int m, float *save);
int scfftm1d( int job, int m, int n, float *array, int incI, int incJ, float *save);
int csfftm1d( int job, int m, int n, float *array, int incI, int incJ, float *save);
float *scfft2di( int n1, int n2, float *save);
int scfft2d( int job, int n1, int n2, float *array, int ld, float *save);
int csfft2d( int job, int n1, int n2, float *array, int ld, float *save);
float *scfft3di( int n1, int n2, int n3, float *save);
int scfft3d( int job, int n1, int n2, int n3, float *array, int ld1, int ld2, float *save);
int csfft3d( int job, int n1, int n2, int n3, float *array, int ld1, int ld2, float *save);
/*
* Fortran Interface
*/
void dzfft1di_( int *n, double *save);
void dzfft1d_( int *job, int *n, double *array, int *inc, double *save);
void zdfft1d_( int *job, int *n, double *array, int *inc, double *save);
void dzfftm1di_( int *m, double *save);
void dzfftm1d_( int *job, int *m, int *n, double *array, int *incI, int *incJ, double *save);
void zdfftm1d_( int *job, int *m, int *n, double *array, int *incI, int *incJ, double *save);
void dzfft2di_( int *n1, int *n2, double *save);
void dzfft2d_( int *job, int *n1, int *n2, double *array, int *ld, double *save);
void zdfft2d_( int *job, int *n1, int *n2, double *array, int *ld, double *save);
void dzfft3di_( int *n1, int *n2, int *n3, double *save);
void dzfft3d_( int *job, int *n1, int *n2, int *n3, double *array, int *ld1, int *ld2, double *save);
void zdfft3d_( int *job, int *n1, int *n2, int *n3, double *array, int *ld1, int *ld2, double *save);
void scfft1di_( int *n, float *save);
void scfft1d_( int *job, int *n, float *array, int *inc, float *save);
void csfft1d_( int *job, int *n, float *array, int *inc, float *save);
void scfftm1di_( int *m, float *save);
void scfftm1d_( int *job, int *m, int *n, float *array, int *incI, int *incJ, float *save);
void csfftm1d_( int *job, int *m, int *n, float *array, int *incI, int *incJ, float *save);
void scfft2di_( int *n1, int *n2, float *save);
void scfft2d_( int *job, int *n1, int *n2, float *array, int *ld, float *save);
void csfft2d_( int *job, int *n1, int *n2, float *array, int *ld, float *save);
void scfft3di_( int *n1, int *n2, int *n3, float *save);
void scfft3d_( int *job, int *n1, int *n2, int *n3, float *array, int *ld1, int *ld2, float *save);
void csfft3d_( int *job, int *n1, int *n2, int *n3, float *array, int *ld1, int *ld2, float *save);
/************************************************************************
C Product modules ...
Performs convolution in 1 Domain by Product in the other
********************************************************************** */
void sprod1du( int n, float *y, int incy, float *filter, int incx);
void dprod1du( int n, double *y, int incy, double *filter, int incx);
void sprodm1du( int n1, int n2, float *y, int incy, int ldy, float *filter, int incx, int ldx);
void dprodm1du( int n1, int n2, double *y, int incy, int ldy, double *filter, int incx, int ldx);
void sprod2du( int n1, int n2, float *y, int ldy, float *filter, int ldx);
void dprod2du( int n1, int n2, double *y, int ldy, double *filter, int ldx);
void sprod3du( int n1, int n2, int n3, float *y, int ldy1, int ldy2,
float *filter, int ldx1, int ldx2);
void dprod3du( int n1, int n2, int n3, double *y, int ldy1, int ldy2,
double *filter, int ldx1, int ldx2);
void sprod1d( int n, float *y, int incy, float *filter, int incx);
void dprod1d( int n, double *y, int incy, double *filter, int incx);
void sprodm1d( int n1, int n2, float *y, int incy, int ldy, float *filter, int incx, int ldx);
void dprodm1d( int n1, int n2, double *y, int incy, int ldy, double *filter, int incx, int ldx);
void sprod2d( int n1, int n2, float *y, int ldy, float *filter, int ldx);
void dprod2d( int n1, int n2, double *y, int ldy, double *filter, int ldx);
void sprod3d( int n1, int n2, int n3, float *y, int ldy1, int ldy2,
float *filter, int ldx1, int ldx2);
void dprod3d( int n1, int n2, int n3, double *y, int ldy1, int ldy2,
double *filter, int ldx1, int ldx2);
/************************************************************************
C Scaling modules ...
Scale the sequence by value APLHA ...
to keep absolute values after Direct+Inverse transform.
********************************************************************** */
void sscal1d( int n, float alpha, float *y, int inc);
void dscal1d( int n, double alpha, double *y, int inc);
void sscalm1d( int m, int n, float alpha, float *array, int incI, int incJ);
void dscalm1d( int m, int n, double alpha, double *array, int incI, int incJ);
void sscal2d( int nx, int ny, float alpha, float *y, int ld);
void dscal2d( int nx, int ny, double alpha, double *y, int ld);
void sscal3d( int nx, int ny, int nz, float alpha, float *y, int ld1,int ld2);
void dscal3d( int nx, int ny, int nz, double alpha, double *y, int ld1,int ld2);
/* ********************************************************
Fortran real <---> complex FFTs
******************************************************** */
void sfft1di_( int *n, float *save);
void sfft1dui_( int *n, float *save);
void sfft1d_( int *job, int *n, float *array, int *inc, float *save);
void sfft1du_( int *job, int *n, float *array, int *inc, float *save);
void sfftm1di_( int *m, float *save);
void sfftm1d_( int *job, int *m, int *n, float *array, int *incI, int *incJ, float *save);
void sfftm1dui_( int *m, float *save);
void sfftm1du_( int *job, int *m, int *n, float *array, int *incI, int *incJ, float *save);
void sfft2di_( int *n1, int *n2, void *save);
void sfft2dui_( int *n1, int *n2, void *save);
void sfft2d_( int *job, int *n1, int *n2, void *array, int *ld, void *save);
void sfft2du_( int *job, int *n1, int *n2, void *array, int *ld, void *save);
void sfft3di_( int *n1, int *n2, int *n3, void *save);
void sfft3dui_( int *n1, int *n2, int *n3, void *save);
void sfft3d_( int *job, int *n1, int *n2, int *n3, void *array, int *ld1, int *ld2, void *save);
void sfft3du_( int *job, int *n1, int *n2, int *n3, void *array, int *ld1, int *ld2, void *save);
/* ********************************************************
Fortran double <---> zomplex FFTs
******************************************************** */
void dfft1di_( int *n, double *save);
void dfft1dui_( int *n, double *save);
void dfft1d_( int *job, int *n, double *array, int *inc, double *save);
void dfft1du_( int *job, int *n, double *array, int *inc, double *save);
void dfftm1di_( int *m, double *save);
void dfftm1d_( int *job, int *m, int *n, double *array, int *incI, int *incJ, double *save);
void dfftm1dui_( int *m, double *save);
void dfftm1du_( int *job, int *m, int *n, double *array, int *incI, int *incJ, double *save);
void dfft2di_( int *n1, int *n2, void *save);
void dfft2dui_( int *n1, int *n2, void *save);
void dfft2d_( int *job, int *n1, int *n2, void *array, int *ld, void *save);
void dfft2du_( int *job, int *n1, int *n2, void *array, int *ld, void *save);
void dfft3di_( int *n1, int *n2, int *n3, void *save);
void dfft3dui_( int *n1, int *n2, int *n3, void *save);
void dfft3d_( int *job, int *n1, int *n2, int *n3, void *array, int *ld1, int *ld2, void *save);
void dfft3du_( int *job, int *n1, int *n2, int *n3, void *array, int *ld1, int *ld2, void *save);
/************************************************************************
C Product modules ...
Performs convolution in 1 Domain by Product in the other
********************************************************************** */
void sprod1du_( int *n, float *y, int *incy, float *filter, int *incx);
void dprod1du_( int *n, double *y, int *incy, double *filter, int *incx);
void sprodm1du_( int *n1, int *n2, float *y, int *incy, int *ldy, float *filter, int *incx, int *ldx);
void dprodm1du_( int *n1, int *n2, double *y, int *incy, int *ldy, double *filter, int *incx, int *ldx);
void sprod2du_( int *n1, int *n2, float *y, int *ldy, float *filter, int *ldx);
void dprod2du_( int *n1, int *n2, double *y, int *ldy, double *filter, int *ldx);
void sprod3du_( int *n1, int *n2, int *n3, float *y, int *ldy1, int *ldy2,
float *filter, int *ldx1, int *ldx2);
void dprod3du_( int *n1, int *n2, int *n3, double *y, int *ldy1, int *ldy2,
double *filter, int *ldx1, int *ldx2);
void sprod1d_( int *n, float *y, int *incy, float *filter, int *incx);
void dprod1d_( int *n, double *y, int *incy, double *filter, int *incx);
void sprodm1d_( int *n1, int *n2, float *y, int *incy, int *ldy, float *filter, int *incx, int *ldx);
void dprodm1d_( int *n1, int *n2, double *y, int *incy, int *ldy, double *filter, int *incx, int *ldx);
void sprod2d_( int *n1, int *n2, float *y, int *ldy, float *filter, int *ldx);
void dprod2d_( int *n1, int *n2, double *y, int *ldy, double *filter, int *ldx);
void sprod3d_( int *n1, int *n2, int *n3, float *y, int *ldy1, int *ldy2,
float *filter, int *ldx1, int *ldx2);
void dprod3d_( int *n1, int *n2, int *n3, double *y, int *ldy1, int *ldy2,
double *filter, int *ldx1, int *ldx2);
/************************************************************************
Fortran Scaling modules ...
Scale the sequence by value APLHA ...
to keep absolute values after Direct+Inverse transform.
********************************************************************** */
void sscal1d_( int *n, float *alpha, float *y, int *inc);
void dscal1d_( int *n, double *alpha, double *y, int *inc);
void sscalm1d_( int *m, int *n, float *alpha, float *array, int *incI, int *incJ);
void dscalm1d_( int *m, int *n, double *alpha, double *array, int *incI, int *incJ);
void sscal2d_( int *nx, int *ny, float *alpha, float *y, int *ld);
void dscal2d_( int *nx, int *ny, double *alpha, double *y, int *ld);
void sscal3d_( int *nx, int *ny, int *nz, float *alpha, float *y, int *ld1,int *ld2);
void dscal3d_( int *nx, int *ny, int *nz, double *alpha, double *y, int *ld1,int *ld2);
#ifdef __cplusplus
}
#endif
#endif